package path.calculator;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.util.List;

import org.junit.Before;
import org.junit.Test;

public class PermutationGeneratorTest {
    private PermutationGenerator<String> generator;

    @Before
    public void setup() {
        generator = new PermutationGenerator<String>();
    }

    @Test
    public void noNodesNoPerumtations() {
        List<Permutation<String>> allCombinations = generator.allCombinations();
        assertEquals(0, allCombinations.size());
    }

    @Test
    public void oneNodeOnePermutation() {
        generator.addNode("A");
        List<Permutation<String>> allCombinations = generator.allCombinations();
        assertTrue(allCombinations.get(0).valuesAre("A"));
    }

    @Test
    public void twoNodesTwoPerutations() {
        generator.addNode("A");
        generator.addNode("B");
        List<Permutation<String>> allCombinations = generator.allCombinations();
        assertTrue(allCombinations.contains(new Permutation<String>("A", "B")));
        assertTrue(allCombinations.contains(new Permutation<String>("B", "A")));
    }
}
